
using System.ComponentModel;
using System.Threading.Tasks;

namespace ZR.Model.ProdManage.Dto
{
    /// <summary>
    /// 三级装柜查询对象
    /// </summary>
    public class ProdThreePackQueryDto : PagerInfo
    {
        /// <summary>
        /// DMS订单 
        /// </summary>
        public string DmsOrderNo { get; set; }
        /// <summary>
        /// 计划号 
        /// </summary>
        public string PlanNo { get; set; }
        /// <summary>
        /// 装柜批次 
        /// </summary>
        public string PackBatchNo { get; set; }
        /// <summary>
        /// 装箱编码 
        /// </summary>
        public string PackNo { get; set; }
        /// <summary>
        /// 装箱状态（1进行2完成3已装箱4已装柜9取消） 
        /// </summary>
        public string PackStatus { get; set; }
        /// <summary>
        /// 包装类型 
        /// </summary>
        public string PackingType { get; set; }
        /// <summary>
        /// 集装箱号 
        /// </summary>
        public string ContainerNo { get; set; }
        /// <summary>
        /// 检测状态(未检、合格、不合格) 
        /// </summary>
        public string CheckStatus { get; set; }
    }

    /// <summary>
    /// 三级装柜输入输出对象
    /// </summary>
    public class ProdThreePackDto
    {
        /// <summary>
        /// 包装id 
        /// </summary>
        [Required(ErrorMessage = "包装id不能为空")]
        [ExcelColumn(Name = "包装id")]
        [ExcelColumnName("包装id")]
        public string PackId { get; set; }

        /// <summary>
        /// DMS订单 
        /// </summary>
        [Required(ErrorMessage = "DMS订单不能为空")]
        [ExcelColumn(Name = "DMS订单")]
        [ExcelColumnName("DMS订单")]
        public string DmsOrderNo { get; set; }

        /// <summary>
        /// 计划号 
        /// </summary>
        [Required(ErrorMessage = "计划号不能为空")]
        [ExcelColumn(Name = "计划号")]
        [ExcelColumnName("计划号")]
        public string PlanNo { get; set; }

        /// <summary>
        /// 仓库 
        /// </summary>
        [ExcelColumn(Name = "仓库")]
        [ExcelColumnName("仓库")]
        public string WareCode { get; set; }

        /// <summary>
        /// 装柜批次 
        /// </summary>
        [Required(ErrorMessage = "装柜批次不能为空")]
        [ExcelColumn(Name = "装柜批次")]
        [ExcelColumnName("装柜批次")]
        public string PackBatchNo { get; set; }

        /// <summary>
        /// 装箱编码 
        /// </summary>
        [Required(ErrorMessage = "装箱编码不能为空")]
        [ExcelColumn(Name = "装箱编码")]
        [ExcelColumnName("装箱编码")]
        public string PackNo { get; set; }

        /// <summary>
        /// 装箱开始时间 
        /// </summary>
        [ExcelColumn(Name = "装箱开始时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
        [ExcelColumnName("装箱开始时间")]
        public DateTime? PackStartTime { get; set; }

        /// <summary>
        /// 装箱结束时间 
        /// </summary>
        [ExcelColumn(Name = "装箱结束时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
        [ExcelColumnName("装箱结束时间")]
        public DateTime? PackEndTime { get; set; }

        /// <summary>
        /// 装箱状态（1进行2完成3已装箱4已装柜9取消） 
        /// </summary>
        [Required(ErrorMessage = "装箱状态（1进行2完成3已装箱4已装柜9取消）不能为空")]
        [ExcelColumn(Name = "装箱状态（1进行2完成3已装箱4已装柜9取消）")]
        [ExcelColumnName("装箱状态（1进行2完成3已装箱4已装柜9取消）")]
        public string PackStatus { get; set; }

        /// <summary>
        /// 包装类型 
        /// </summary>
        [Required(ErrorMessage = "包装类型不能为空")]
        [ExcelColumn(Name = "包装类型")]
        [ExcelColumnName("包装类型")]
        public string PackingType { get; set; }

        /// <summary>
        /// 长 
        /// </summary>
        [ExcelColumn(Name = "长")]
        [ExcelColumnName("长")]
        public decimal PackLength { get; set; }

        /// <summary>
        /// 宽 
        /// </summary>
        [ExcelColumn(Name = "宽")]
        [ExcelColumnName("宽")]
        public decimal PackWidth { get; set; }

        /// <summary>
        /// 高 
        /// </summary>
        [ExcelColumn(Name = "高")]
        [ExcelColumnName("高")]
        public decimal PackHeight { get; set; }

        /// <summary>
        /// 重 
        /// </summary>
        [ExcelColumn(Name = "重")]
        [ExcelColumnName("重")]
        public decimal PackWeight { get; set; }

        /// <summary>
        /// 净重 
        /// </summary>
        [ExcelColumn(Name = "净重")]
        [ExcelColumnName("净重")]
        public decimal NetWeight { get; set; }

        /// <summary>
        /// 毛重 
        /// </summary>
        [ExcelColumn(Name = "毛重")]
        [ExcelColumnName("毛重")]
        public decimal GrossWeight { get; set; }

        /// <summary>
        /// 签封号 
        /// </summary>
        [ExcelColumn(Name = "签封号")]
        [ExcelColumnName("签封号")]
        public string CaseNo { get; set; }

        /// <summary>
        /// 集装箱号 
        /// </summary>
        [ExcelColumn(Name = "集装箱号")]
        [ExcelColumnName("集装箱号")]
        public string ContainerNo { get; set; }

        /// <summary>
        /// 参考包装 
        /// </summary>
        [ExcelColumn(Name = "参考包装")]
        [ExcelColumnName("参考包装")]
        public long? ReferencePack { get; set; }

        /// <summary>
        /// 车牌 
        /// </summary>
        [ExcelColumn(Name = "车牌")]
        [ExcelColumnName("车牌")]
        public string CarNo { get; set; }

        /// <summary>
        /// 司机电话 
        /// </summary>
        [ExcelColumn(Name = "司机电话")]
        [ExcelColumnName("司机电话")]
        public string DriverTel { get; set; }

        /// <summary>
        /// 检查人 
        /// </summary>
        [ExcelColumn(Name = "检查人")]
        [ExcelColumnName("检查人")]
        public long? CheckUser { get; set; }

        /// <summary>
        /// 检查时间 
        /// </summary>
        [ExcelColumn(Name = "检查时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
        [ExcelColumnName("检查时间")]
        public DateTime? CheckTime { get; set; }

        /// <summary>
        /// 取消人 
        /// </summary>
        [ExcelColumn(Name = "取消人")]
        [ExcelColumnName("取消人")]
        public long? CancelUser { get; set; }

        /// <summary>
        /// 取消时间 
        /// </summary>
        [ExcelColumn(Name = "取消时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
        [ExcelColumnName("取消时间")]
        public DateTime? CancelTime { get; set; }

        /// <summary>
        /// 检测状态(未检、合格、不合格) 
        /// </summary>
        [ExcelColumn(Name = "检测状态(未检、合格、不合格)")]
        [ExcelColumnName("检测状态(未检、合格、不合格)")]
        public string CheckStatus { get; set; }

        /// <summary>
        /// 检查描述 
        /// </summary>
        [ExcelColumn(Name = "检查描述")]
        [ExcelColumnName("检查描述")]
        public string CheckDesc { get; set; }

        /// <summary>
        /// SerialNumber 
        /// </summary>
        [ExcelColumn(Name = "SerialNumber")]
        [ExcelColumnName("SerialNumber")]
        public long? SerialNumber { get; set; }

        /// <summary>
        /// 打印状态(已打印、未打印) 
        /// </summary>
        [Required(ErrorMessage = "打印状态(已打印、未打印)不能为空")]
        [ExcelColumn(Name = "打印状态(已打印、未打印)")]
        [ExcelColumnName("打印状态(已打印、未打印)")]
        public string PrintState { get; set; }

        /// <summary>
        /// 上传状态(Y成功N失败W等待) 
        /// </summary>
        [Required(ErrorMessage = "上传状态(Y成功N失败W等待)不能为空")]
        [ExcelColumn(Name = "上传状态(Y成功N失败W等待)")]
        [ExcelColumnName("上传状态(Y成功N失败W等待)")]
        public string PostbackState { get; set; }

        /// <summary>
        /// 创建人 
        /// </summary>
        [ExcelColumn(Name = "创建人")]
        [ExcelColumnName("创建人")]
        public string CreateBy { get; set; }

        /// <summary>
        /// 创建时间 
        /// </summary>
        [ExcelColumn(Name = "创建时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
        [ExcelColumnName("创建时间")]
        public DateTime? CreateTime { get; set; }

        /// <summary>
        /// 更新人 
        /// </summary>
        [ExcelColumn(Name = "更新人")]
        [ExcelColumnName("更新人")]
        public string UpdateBy { get; set; }

        /// <summary>
        /// 更新时间 
        /// </summary>
        [ExcelColumn(Name = "更新时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
        [ExcelColumnName("更新时间")]
        public DateTime? UpdateTime { get; set; }

        /// <summary>
        /// 备注 
        /// </summary>
        [ExcelColumn(Name = "备注")]
        [ExcelColumnName("备注")]
        public string Remark { get; set; }



        [ExcelColumn(Name = "装箱状态（1进行2完成3已装箱4已装柜9取消）")]
        public string PackStatusLabel { get; set; }
        [ExcelColumn(Name = "包装类型")]
        public string PackingTypeLabel { get; set; }
        [ExcelColumn(Name = "检测状态(未检、合格、不合格)")]
        public string CheckStatusLabel { get; set; }
        [ExcelColumn(Name = "打印状态(已打印、未打印)")]
        public string PrintStateLabel { get; set; }
        [ExcelColumn(Name = "上传状态(Y成功N失败W等待)")]
        public string PostbackStateLabel { get; set; }
    }


    /// <summary>
    /// 推送三级订单对象
    /// </summary>
    public class WmsThreePackDto
    {
        /// <summary>
        /// DMS订单
        /// </summary>
        public string dmsOrderNo { get; set; }
        /// <summary>
        /// 计划号
        /// </summary>
        public string planNo { get; set; }
        /// <summary>
        /// 装柜批次
        /// </summary>
        public string packBatchNo { get; set; }
        /// <summary>
        /// 装箱编码
        /// </summary>
        public string packNo { get; set; }
        /// <summary>
        /// 装箱开始时间
        /// </summary>
        public DateTime? packStartTime { get; set; }
        /// <summary>
        /// 装箱结束时间
        /// </summary>
        public DateTime? packEndTime { get; set; }
        /// <summary>
        /// 装箱状态（1进行2完成3已装箱4已装柜9取消）
        /// </summary>
        public string packStatus { get; set; }
        /// <summary>
        /// 仓库
        /// </summary>
        public string wareCode { get; set; }
        /// <summary>
        /// 包装类型
        /// </summary>
        public string packingType { get; set; }
        /// <summary>
        /// 长
        /// </summary>
        public decimal? packLength { get; set; }
        /// <summary>
        /// 宽
        /// </summary>
        public decimal? packWidth { get; set; }
        /// <summary>
        /// 高
        /// </summary>
        public decimal? packHeight { get; set; }
        /// <summary>
        /// 重
        /// </summary>
        public decimal? packWeight { get; set; }
        /// <summary>
        /// 签封号
        /// </summary>
        public string caseNo { get; set; }
        /// <summary>
        /// 集装箱号
        /// </summary>
        public string containerNo { get; set; }
        /// <summary>
        /// 净重
        /// </summary>
        public decimal? netWeight { get; set; }
        /// <summary>
        /// 毛重
        /// </summary>
        public decimal? grossWeight { get; set; }
        /// <summary>
        /// 参考包装
        /// </summary>
        public long? referencePack { get; set; }
        /// <summary>
        /// 车牌
        /// </summary>
        public string carNo { get; set; }
        /// <summary>
        /// 司机电话
        /// </summary>
        public string driverTel { get; set; }
        /// <summary>
        /// 检查人
        /// </summary>
        public long? checkUser { get; set; }
        /// <summary>
        /// 检查时间
        /// </summary>
        public DateTime? checkTime { get; set; }
        /// <summary>
        /// 取消人
        /// </summary>
        public long? cancelUser { get; set; }
        /// <summary>
        /// 取消时间
        /// </summary>
        public DateTime? cancelTime { get; set; }
        /// <summary>
        /// 检测状态(未检、合格、不合格)
        /// </summary>
        public string checkStatus { get; set; }
        /// <summary>
        /// 检查描述
        /// </summary>
        public string checkDesc { get; set; }
        public long? serialNumber { get; set; }

        /// <summary>
        /// 三级装柜明细
        /// </summary>
        public List<WmsThreePackDetailDto> detail { get; set; }
        
    }
}